iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 8
0

list

list 是 mutable 的,所以可以對 list 新增、刪除元素.
有兩種建立 list 的方法.

>>> user_names = list()
>>> admin_names = []

>>> type(user_names)
<class 'list'>
>>> type(admin_names)
<class 'list'>

python 的 list 可以存放不同型態的物件.

>>> items = [10 , 'apple' , 0.9 , [1,2,3]]
>>> print(items)
[10, 'apple', 0.9, [1, 2, 3]]

如果丟一個 string 給 list.list 會根據字元分割回傳一個 char list.

>>> list('Hello python!')
['H', 'e', 'l', 'l', 'o', ' ', 'p', 'y', 't', 'h', 'o', 'n', '!']

使用 append 來對 list 新增元素.

>>> user_list=[]
>>> user_list.append('Daniel')
>>> user_list.append('Sam')
>>> user_list.append('Jack')
>>> print(user_list)
['Daniel', 'Sam', 'Jack']

list 的 index 是從 0 開始.

>>> user_list[0]
'Daniel'
>>> user_list[1]
'Sam'

使用 insert 把元素加到指定的 index 位址.

>>> user_list.insert(0,'John')
>>> print(user_list)
['John', 'Daniel', 'Sam', 'Jack']
>>> user_list[1]
'Daniel'

使用 remove 可以直接把該元素移除.

>>> user_list.remove('Sam')
>>> print(user_list)
['John', 'Daniel', 'Jack']

使用 del 刪除該 index 元素.

>>> del user_list[1]
>>> print(user_list)
['John', 'Jack']

使用 sort 來排序 list.

>>> user_list.append('Allen')
>>> print(user_list)
['Jack', 'John', 'Allen']
>>> user_list.sort()
>>> print(user_list)
['Allen', 'Jack', 'John']

如果要反過來排序只要加 reverse=True 即可.

>>> user_list.sort(reverse=True)
>>> print(user_list)
['John', 'Jack', 'Allen']

由於 list 是 mutable 的,所以上面 sort 的寫法無法存取原來的 list.這時候可以使用 sorted 來建立另外一個排序過的 list 這樣就不會影響原來的 list 了.

>>> user_sort_list = sorted(user_list)
>>> print(user_sort_list)
['Allen', 'Jack', 'John']
>>> print(user_list)
['John', 'Jack', 'Allen']

當一個 list 裡的元素型態不一致時使用 sort 會出錯.

>>> items = [1,'a','5',2.5,[0]]
>>> items.sort()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'str' and 'int'

這時候可以帶入 key=str 參數就可以把元素當成 string 來排序.

>>> items.sort(key=str)
>>> print(items)
[1, 2.5, '5', [0], 'a']

python 提供了 max、min、sum 來對 list 做計算.

>>> score = [6,1,2.5,7,9,12,94,36,76]
>>> max(score)
94
>>> min(score)
1
>>> sum(score)
243.5

字串也可以找 max、min 但 sum 就會出錯了.

>>> user_names = ['Daniel','Jack','Allen']
>>> max(user_names)
'Jack'
>>> min(user_names)
'Allen'
>>> sum(user_names)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

可以使用 index 來查找某個元素的 index,如過不存在則會出現錯物.

>>> user_names.index('Sam')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 'Sam' is not in list
>>> user_names.index('Jack')
1

所以再取元素的 index 前可以先用 in 判斷一下元素是否存在.

>>> 'Sam' in user_names
False

上一篇
python day7 (conditionals)
下一篇
python day9 (range、tuples)
系列文
python 自學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言